import * as Blockly from 'blockly/core';

const ACTUATOR_HUE = 100;


export const actuator_led_PWMinit = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("初始化");
        this.appendDummyInput()
            .appendField("闪光灯");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip();
    }
};

export const actuator_Buzzer_PWMinit = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("初始化");
        this.appendDummyInput()
            .appendField("蜂鸣器");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip();
    }
};

export const actuator_led_PWM = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("设置");
        this.appendDummyInput()
            .appendField("闪光灯");
        this.appendValueInput('bright')
            .appendField("亮度")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("%");
        this.setInputsInline(true);
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setTooltip();
    }
};

export const actuator_Buzzer_PWM = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("设置");
        this.appendDummyInput()
            .appendField("蜂鸣器");
        this.appendValueInput('bright')
            .appendField("频率")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("Hz");
        this.setInputsInline(true);
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setTooltip();
    }
};

//--old
export const actuator_Servo_init = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("初始化");
        this.appendDummyInput()
            .appendField("舵机");
        this.appendValueInput("PIN", Number)
            .appendField("管脚")
            .setCheck(Number);
        this.appendValueInput('time')
            .appendField("定时器")
            .setCheck(Number);
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip();
    }
};

export const actuator_Servo_init_new = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("初始化");
        this.appendDummyInput()
            .appendField("舵机");
        this.appendValueInput("PIN", Number)
            .appendField("管脚")
            .setCheck(Number);
        this.appendValueInput('time')
            .appendField("定时器")
            .setCheck(Number);
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip();
    }
};

//--old
export const actuator_Servo = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("设置");
        this.appendDummyInput()
            .appendField("舵机");
        this.appendValueInput("PIN", Number)
            .appendField("管脚")
            .setCheck(Number);
        this.appendValueInput('range')
            .appendField("角度")
            .setCheck(Number);
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip();
    }
};

export const actuator_Servo_new = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("设置");
        this.appendDummyInput()
            .appendField("舵机");
        this.appendValueInput("PIN", Number)
            .appendField("管脚")
            .setCheck(Number);
        this.appendValueInput('range')
            .appendField("角度")
            .setCheck(Number);
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip();
    }
};

export const actuator_Servo_read_new = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("读取");
        this.appendDummyInput()
            .appendField("舵机");
        this.appendValueInput("PIN", Number)
            .appendField("管脚")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("角度");
        this.setInputsInline(true);
        this.setOutput(true, Number);
        this.setTooltip();
    }
};

export const actuator_syn8266 = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("SYN6288")
        this.appendDummyInput()
            .appendField("语音播放")
        this.appendDummyInput()
            .appendField("通过")
            .appendField(new Blockly.FieldDropdown([['uart1', '1'], ['uart2', '2'], ['uart3', '3']]), 'mode');
        this.appendValueInput('data')
            .setAlign(Blockly.ALIGN_RIGHT)
            .appendField("内容")
            .setCheck(String);
        this.setInputsInline(true);
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setTooltip("[Teaile]:语音合成播放，需要调用串口");
    }
};


export const actuator_PAC9685_init = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("初始化");
        this.appendDummyInput()
            .appendField("16路舵机");
        this.appendValueInput('address')
            .appendField("地址")
            .setCheck(Number);
        this.appendValueInput('SUB')
            .setCheck("var")
            .setAlign(Blockly.ALIGN_RIGHT)
            .appendField("通信");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:使用PCA9685驱动16路舵机并备注IIC端口");
    }
};

export const actuator_PAC9685_Servo = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("设置");
        this.appendDummyInput()
            .appendField("16路舵机");
        this.appendValueInput("index")
            .appendField("编号")
            .setCheck(Number);
        this.appendValueInput('range')
            .appendField("角度")
            .setCheck(Number);
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:使用PCA9685驱动16路舵机，输入编号机角度");
    }
};


//---------------------------------MIXNO没有的---------------------

export const actuator_rgb_init = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendValueInput('SUB')
            .appendField("初始化")
            .setCheck("var");
        this.appendValueInput("PIN", Number)
            .appendField("管脚")
            .setCheck(Number);
        this.appendValueInput('num')
            .appendField("灯数")
            .setCheck(Number);
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip();
    }
};

export const actuator_rgb_set = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendValueInput('SUB')
            .appendField("")
            .setCheck("var");
        this.appendValueInput('num')
            .appendField("灯号")
            .setCheck(Number);
        this.appendValueInput('R')
            .appendField("R值")
            .setCheck(Number);
        this.appendValueInput('G')
            .appendField("G值")
            .setCheck(Number);
        this.appendValueInput('B')
            .appendField("B值")
            .setCheck(Number);
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip();
    }
};

export const actuator_rgb_set_new = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendValueInput('SUB')
            .appendField("")
            .setCheck("var");
        this.appendValueInput('num')
            .appendField("灯号")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("灯序")
            .appendField(new Blockly.FieldDropdown([
                ["RGB", "RGB"],
                ["GRB", "GRB"]
            ]), "KEY");
        this.appendValueInput('R')
            .appendField("R值")
            .setCheck(Number);
        this.appendValueInput('G')
            .appendField("G值")
            .setCheck(Number);
        this.appendValueInput('B')
            .appendField("B值")
            .setCheck(Number);
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip();
    }
};

export const actuator_rgb_display = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendValueInput('SUB')
            .appendField("")
            .setCheck("var");
        this.appendDummyInput()
            .appendField("生效");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip();
    }
};

export const actuator_moto_init = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("初始化");
        this.appendDummyInput()
            .appendField("马达")
            .appendField(new Blockly.FieldDropdown([['moto1', '1'], ['moto2', '2']]), 'mode');
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("初始化拓展版电机");
    }
};

export const actuator_moto_run = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("2WD扩展 设置马达")
            .appendField(new Blockly.FieldDropdown([['M1', '1'], ['M2', '2']]), 'mode');
        this.appendValueInput('speed')
            .appendField("转速")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("%");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("运行拓展版电机速度(-100~100%)");
    }
};


//--开始--------------------------Amigo硬件 -20210920-------------------------------------------------
export const actuator_Amigo_led_PWMinit = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("初始化");
        this.appendDummyInput()
            .appendField("闪光灯");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip();
    }
};


export const actuator_Amigo_led_PWM = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("设置");
        this.appendDummyInput()
            .appendField("闪光灯");
        this.appendValueInput('bright')
            .appendField("亮度")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("%");
        this.setInputsInline(true);
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setTooltip();
    }
};
//---------20220312----机器狗-------------------------

export const actuator_Dog_servo_config = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("机器狗");
        this.appendDummyInput()
            .appendField("舵机标定校准");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("舵机标定校准,切勿放置运行状态下配置");
    }
};


export const actuator_Dog_height = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        // this.appendDummyInput()
        // .appendField("设置");
        this.appendDummyInput()
            .appendField("机器狗");
        this.appendValueInput('height')
            .appendField("高度")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("mm");
        this.setInputsInline(true);
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setTooltip("机器狗的身高设置");
    }
};

export const actuator_Dog_stable = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        // this.appendDummyInput()
        // .appendField("设置");
        this.appendDummyInput()
            .appendField("机器狗");
        this.appendValueInput('key')
            .appendField("自稳态")
        this.setInputsInline(true);
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setTooltip("机器狗是否打开陀螺仪");
    }
};

export const actuator_Dog_gait = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        // this.appendDummyInput()
        // .appendField("设置");
        this.appendDummyInput()
            .appendField("机器狗");
        this.appendDummyInput()
            .appendField("步态")
            .appendField(new Blockly.FieldDropdown([['WALK', '1'], ['TROT', '0']]), 'mode');
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("设置机器狗步态");
    }
};

export const actuator_Dog_gesture = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        // this.appendDummyInput()
        // .appendField("设置");
        this.appendDummyInput()
            .appendField("机器狗   姿态");
        this.appendValueInput('PIT')
            .setAlign(Blockly.ALIGN_RIGHT)
            .appendField("俯仰轴角度")
            .setCheck(Number);
        this.appendValueInput('ROL')
            .setAlign(Blockly.ALIGN_RIGHT)
            .appendField("滚转轴角度")
            .setCheck(Number);
        this.appendValueInput('X_goal')
            .setAlign(Blockly.ALIGN_RIGHT)
            .appendField("前后偏移量")
            .setCheck(Number);
        //this.setInputsInline(true);
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setTooltip("设置机器狗的姿态(俯仰范围-10~10°，滚转范围-10~10°，前后偏移量-40~40mm)");
    }
};

export const actuator_Dog_init_gesture = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("机器狗");
        this.appendDummyInput()
            .appendField("恢复初始姿态");
        this.setInputsInline(true);
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setTooltip("恢复校准后的机器狗的姿态");
    }
};

export const actuator_Dog_move = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        // this.appendDummyInput()
        // .appendField("设置");
        this.appendDummyInput()
            .appendField("机器狗   运动");
        this.appendValueInput('speed')
            .setAlign(Blockly.ALIGN_RIGHT)
            .appendField("速度")
            .setCheck(Number);
        this.appendValueInput('key_l')
            .setAlign(Blockly.ALIGN_RIGHT)
            .appendField("左方向")
        this.appendValueInput('key_r')
            .setAlign(Blockly.ALIGN_RIGHT)
            .appendField("右方向")
        //this.setInputsInline(true);
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setTooltip("");
    }
};

export const run_state = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput("")
            .appendField(new Blockly.FieldDropdown([
                ["前", "1"],
                ["停", "0"],
                ["后", "-1"]
            ]), "flag");
        this.setOutput(true);
        this.setTooltip();
    }
};


export const actuator_Dog_stop = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("机器狗");
        this.appendDummyInput()
            .appendField("停止所有运动");
        this.setInputsInline(true);
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setTooltip("停止所有运动，包括舵机断电");
    }
};

// AIBIT-4WD-拓展----------------
export const actuator_4WD_Servo = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("4WD扩展");
        this.appendDummyInput()
            .appendField("设置舵机")
            .appendField(new Blockly.FieldDropdown([
                ['S1', '1'],
                ['S2', '2'],
                ['S3', '3'],
                ['S4', '4'],
                ['S5', '5'],
                ['S6', '6'],
                ['S7', '7'],
                ['S8', '8']
            ]), 'mode');
        this.appendValueInput('range')
            .appendField("角度")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("°");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:设置4WD扩展板1~8号舵机角度(0~180)");
    }
};

export const actuator_4WD_Motor = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("4WD扩展");
        this.appendDummyInput()
            .appendField("设置马达")
            .appendField(new Blockly.FieldDropdown([
                ['M1', '2'],
                ['M2', '1'],
                ['M3', '4'],
                ['M4', '3']
            ]), 'mode');
        this.appendValueInput('speed')
            .appendField("转速")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("%");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:设置4WD扩展板1~4号马达速度(-100~100%)");
    }
};


// ---------无人机拓展----------------
export const actuator_fly_init = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("初始化");
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('key')
            .appendField("语音播报")
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip();
    }
};

export const actuator_fly_takeOff = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendValueInput('high')
            .appendField("起飞")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("cm");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:起飞指定高度");
    }
};

export const actuator_fly_flyMode = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("切换")
            .appendField(new Blockly.FieldDropdown([
                ['光流定位', "'光流定位'"],
                ['标签定位', "'标签定位'"],
                ['自主巡线', "'自主巡线'"]
            ]), 'mode');
        this.appendDummyInput()
            .appendField("模式");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:光流定位：只使用光流进行定位； 标签定位：使用光流+标签识别组合定位；自主巡线：使用光流+黑线识别组合定位");
    }
};

export const actuator_fly_xySpeed = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendValueInput('speed')
            .appendField("水平速度")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("cm/s");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:设置前后左右飞行的最大速度");
    }
};

export const actuator_fly_zSpeed = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendValueInput('speed')
            .appendField("垂直速度")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("cm/s");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:设置上升下降飞行的最大速度");
    }
};

export const actuator_fly_moveCtrl = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("向")
            .appendField(new Blockly.FieldDropdown([
                ["前", "'前'"],
                ["后", "'后'"],
                ["左", "'左'"],
                ["右", "'右'"],
                ["上", "'上'"],
                ["下", "'下'"],
                ["左上", "'左上'"],
                ["右上", "'右上'"],
                ["左下", "'左下'"],
                ["右下", "'右下'"]
            ]), 'mode');
        this.appendValueInput('distance')
            .appendField("飞行")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("cm");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:往指定方向水平移动设定的距离");
    }
};

export const actuator_fly_moveSearchDot = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("向")
            .appendField(new Blockly.FieldDropdown([
                ["前", "'前'"],
                ["后", "'后'"],
                ["左", "'左'"],
                ["右", "'右'"],
                ["左上", "'左上'"],
                ["右上", "'右上'"],
                ["左下", "'左下'"],
                ["右下", "'右下'"]
            ]), 'mode');
        this.appendValueInput('distance')
            .appendField("飞行")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("cm");
        this.appendDummyInput()
            .appendField("寻找黑色色块");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:往指定方向水平移动设定的距离（巡线模式下禁止使用），途中如果识别到黑点则自动切换为跟随模式并悬停在该黑点正上方");
    }
};

export const actuator_fly_moveSearchBlob = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("向")
            .appendField(new Blockly.FieldDropdown([
                ["前", "'前'"],
                ["后", "'后'"],
                ["左", "'左'"],
                ["右", "'右'"],
                ["左上", "'左上'"],
                ["右上", "'右上'"],
                ["左下", "'左下'"],
                ["右下", "'右下'"]
            ]), 'mode');
        this.appendValueInput('distance')
            .appendField("飞行")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("cm");
        this.appendValueInput('LIST')
            .appendField("寻找色块");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:往指定方向水平移动设定的距离（巡线模式下禁止使用），途中如果识别到色块则自动切换为跟随模式并悬停在该色块正上方");
    }
};

export const actuator_fly_moveSearchTag = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("向")
            .appendField(new Blockly.FieldDropdown([
                ["前", "'前'"],
                ["后", "'后'"],
                ["左", "'左'"],
                ["右", "'右'"],
                ["左上", "'左上'"],
                ["右上", "'右上'"],
                ["左下", "'左下'"],
                ["右下", "'右下'"]
            ]), 'mode');
        this.appendValueInput('distance')
            .appendField("飞行")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("cm");
        this.appendValueInput('tagID')
            .appendField("寻找")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("号标签");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:往指定方向水平移动设定的距离（巡线模式下会自动沿着线飞行），途中如果识别到指定编号的标签则自动切换为标签定位模式并悬停在该标签正上方，并且机头方向和标签方向自动对齐");
    }
};

export const actuator_fly_moveFollowTag = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("向")
            .appendField(new Blockly.FieldDropdown([
                ["前", "'前'"],
                ["后", "'后'"],
                ["左", "'左'"],
                ["右", "'右'"],
                ["左上", "'左上'"],
                ["右上", "'右上'"],
                ["左下", "'左下'"],
                ["右下", "'右下'"]
            ]), 'mode');
        this.appendValueInput('distance')
            .appendField("飞行")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("cm");
        this.appendValueInput('tagID')
            .appendField("跟随")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("号标签");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:往指定方向水平移动设定的距离（巡线 模式下会自动沿着线飞行），途中如果识别到指定编号的标签则自动切换为跟随模式并悬停在该标签正上方");
    }
};

export const actuator_fly_goTo = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendValueInput('LIST')
            .appendField("直达");
        this.appendDummyInput()
            .appendField("坐标");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:直达指定位置，只能在编队地图上使用该命令！");
    }
};

export const actuator_fly_goToTag = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendValueInput('tagID')
            .appendField("直达")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("号标签");
        this.appendValueInput('high')
            .appendField("高度")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("cm");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:直达指定编号的标签，只能在编队地图上使用该命令！");
    }
};

export const actuator_fly_rotation = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendValueInput('angle')
            .appendField("旋转")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("°");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:自转指定角度，正数表示顺时针转，负数表示逆时针转");
    }
};

export const actuator_fly_flyHigh = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendValueInput('high')
            .appendField("高度")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("cm");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:调整飞行高度，建议高度值在 50-150 之间");
    }
};

export const actuator_fly_flipCtrl = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("向")
            .appendField(new Blockly.FieldDropdown([
                ["前", "'前'"],
                ["后", "'后'"],
                ["左", "'左'"],
                ["右", "'右'"]
            ]), 'mode');
        this.appendValueInput('cir')
            .appendField("翻滚")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("圈");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:向指定方向翻滚指定圈数，最大 2 圈");
    }
};

export const actuator_fly_ledCtrl = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendValueInput('LIST')
            .appendField("RGB灯");
        this.appendDummyInput()
            .appendField("模式")
            .appendField(new Blockly.FieldDropdown([
                ["常亮", "'常亮'"],
                ["呼吸灯", "'呼吸灯'"],
                ["七彩变幻", "'七彩变幻'"]
            ]), 'mode');
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:设置灯光颜色和模式");
    }
};

export const actuator_fly_closeLed = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("关闭灯光");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:关闭灯光");
    }
};

export const actuator_fly_shootCtrl = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("发射激光")
            .appendField(new Blockly.FieldDropdown([
                ["单次", "'单次'"],
                ["连续", "'连续'"],
                ["停止", "'停止'"]
            ]), 'mode');
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:打开或关闭激光枪");
    }
};

export const actuator_fly_magnetCtrl = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("电磁铁")
            .appendField(new Blockly.FieldDropdown([
                ["关闭", "'关闭'"],
                ["打开", "'打开'"]
            ]), 'mode');
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:打开或关闭电磁铁");
    }
};

export const actuator_fly_servoCtrl = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendValueInput('angle')
            .appendField("设置舵机")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("°");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:设置舵机角度");
    }
};

//---------Ctrl--------





export const actuator_fly_mvCheckMode = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("检测")
            .appendField(new Blockly.FieldDropdown([
                ["黑点", "'黑点'"],
                ["黑线", "'黑线'"],
                ["标签", "'标签'"]
            ]), 'mode');
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:打开黑点、黑线、标签检测。");
    }
};

export const actuator_fly_mvCheckAprilTag = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendValueInput('tagID')
            .appendField("检测")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("号标签");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:检测指定编号的标签，其他编号的标签不会被检测到");
    }
};

export const actuator_fly_mvCheckBlob = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendValueInput('LIST')
            .appendField("检测色块");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:检测指定颜色阈值的色块");
    }
};

export const actuator_fly_getMvCheak = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("检测到")
            .appendField(new Blockly.FieldDropdown([
                ["黑点", "'黑点'"],
                ["黑线", "'黑线'"],
                ["标签", "'标签'"]
            ]), 'mode');
        this.appendDummyInput()
            .appendField("?");
        this.setInputsInline(true);
        this.setOutput(true, Number);
        this.setTooltip("[Teaile]:判断是否检测到黑点、黑线、标签");
    }
};

export const actuator_fly_getMvCheakLine = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("检测到")
            .appendField(new Blockly.FieldDropdown([
                ["前", "'前'"],
                ["后", "'后'"],
                ["左", "'左'"],
                ["右", "'右'"]
            ]), 'mode');
        this.appendDummyInput()
            .appendField("边有线?");
        this.setInputsInline(true);
        this.setOutput(true, Number);
        this.setTooltip("[Teaile]:判断是否检测到指定方向上的黑线");
    }
};

export const actuator_fly_getObsDistance = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("离")
            .appendField(new Blockly.FieldDropdown([
                ["前", "'前'"],
                ["后", "'后'"],
                ["左", "'左'"],
                ["右", "'右'"]
            ]), 'mode');
        this.appendDummyInput()
            .appendField("障碍物距离");
        this.setInputsInline(true);
        this.setOutput(true, Number);
        this.setTooltip("[Teaile]:返回指定方向上的障碍物距离");
    }
};


export const actuator_fly_getFlySensor = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("获取")
            .appendField(new Blockly.FieldDropdown([
                ["标签号", "'标签号'"],
                ["横滚角", "'横滚角'"],
                ["俯仰角", "'俯仰角'"],
                ["偏航角", "'偏航角'"],
                ["横坐标", "'横坐标'"],
                ["纵坐标", "'纵坐标'"],
                ["高度", "'高度'"],
                ["横轴误差", "'横轴误差'"],
                ["纵轴误差", "'纵轴误差'"],
                ["高度误差", "'高度误差'"],
                ["电压", "'电压'"]
            ]), 'mode');
        this.appendDummyInput()
            .appendField("数据");
        this.setInputsInline(true);
        this.setOutput(true, Number);
        this.setTooltip("[Teaile]:返回无人机各个传感器数据");
    }
};

export const actuator_fly_lockDir = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("机头方向")
            .appendField(new Blockly.FieldDropdown([
                ["锁定", "'锁定'"],
                ["解锁", "'解锁'"]
            ]), 'mode');
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:锁定或解锁飞机的方向");
    }
};

export const actuator_fly_flyCtrl = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("进行")
            .appendField(new Blockly.FieldDropdown([
                ["降落", "'降落'"],
                ["刹车", "'刹车'"],
                ["悬停", "'悬停'"],
                ["急停", "'急停'"],
                ["校准", "'校准'"]
            ]), 'mode');
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:控制飞机降落、刹车、悬停和急停，还能水平校准");
    }
};

export const actuator_fly_photographMode = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("回传")
            .appendField(new Blockly.FieldDropdown([
                ["拍照", "'拍照'"],
                ["颜色采样", "'颜色采样'"],
                ["颜色识别", "'颜色识别'"]
            ]), 'mode');
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:回传设定模式的图片，回传成功后可以在“图形化编队”的工具->无线图传窗口查看");
    }
};

export const actuator_fly_roleCtrl = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendValueInput('data')
            .appendField("发送")
            .setCheck(String);
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:发送字符串消息");
    }
};

export const actuator_fly_getRoleNews = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("获取消息")
            .appendField(new Blockly.FieldDropdown([
                ["内容", "'内容'"],
                ["序号", "'序号'"]
            ]), 'mode');
        this.setInputsInline(true);
        this.setOutput(true, Number);
        this.setTooltip("[Teaile]:返回消息内容");
    }
};

export const actuator_fly_clearRoleNews = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("清除消息");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:清除消息内容");
    }
};

export const actuator_fly_move = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("无人机");
        this.appendValueInput('id')
            .appendField("ID")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("从")
            .appendField(new Blockly.FieldDropdown([
                ["当前", "'当前'"],
                ["目标", "'目标'"]
            ]), 'mode');
        this.appendValueInput('LIST')
            .appendField("移动");
        this.appendDummyInput()
            .appendField("cm");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:从当前或者目标位置移动");
    }
};

//-新20211221------PID算法，暂时放此处------------------------------------------//
export const PID_init = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendValueInput('SUB')
            .setCheck("var")
            .appendField("初始化");
        this.appendValueInput("P", Number)
            .appendField("P值")
            .setCheck(Number)
            .setAlign(Blockly.ALIGN_RIGHT);
        this.appendValueInput("I", Number)
            .appendField("I值")
            .setCheck(Number)
            .setAlign(Blockly.ALIGN_RIGHT);
        this.appendValueInput("D", Number)
            .appendField("D值")
            .setCheck(Number)
            .setAlign(Blockly.ALIGN_RIGHT);
        this.setPreviousStatement(true);
        this.setNextStatement(true);
        this.setInputsInline(true);
        this.setTooltip("初始化PID算法");
    }
};

//-新20211221------PID算法，暂时放此处------------------------------------------//
export const PID_get_pid = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendValueInput('SUB')
            .setCheck("var")
            .appendField("");
        this.appendDummyInput()
            .appendField("运算");
        this.appendValueInput("error")
            .appendField("偏移量")
            .setCheck(Number)
            .setAlign(Blockly.ALIGN_RIGHT);
        this.appendValueInput("scaler")
            .appendField("定标量")
            .setCheck(Number)
            .setAlign(Blockly.ALIGN_RIGHT);
        this.setOutput(true);
        this.setInputsInline(true);
        this.setTooltip("根据参数返回运算结果");
    }
};

//---------------TABIT板载执行器资源---20230520--------------------
export const actuator_tabit_rgb_set = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("RGB灯");
        this.appendValueInput('num')
            .appendField("灯号")
            .setCheck(Number);
        this.appendValueInput('R')
            .appendField("R值")
            .setCheck(Number);
        this.appendValueInput('G')
            .appendField("G值")
            .setCheck(Number);
        this.appendValueInput('B')
            .appendField("B值")
            .setCheck(Number);
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip();
    }
};

export const actuator_tabit_rgb_display = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("RGB灯");
        this.appendDummyInput()
            .appendField("生效");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip();
    }
};

//---------------ASBIT板载执行器 &RGB共用资源---20230720--------------------
export const actuator_xxbit_rgb_set = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("RGB灯");
        this.appendValueInput('num')
            .appendField("灯号")
            .setCheck(Number);
        this.appendValueInput('R')
            .appendField("R值")
            .setCheck(Number);
        this.appendValueInput('G')
            .appendField("G值")
            .setCheck(Number);
        this.appendValueInput('B')
            .appendField("B值")
            .setCheck(Number);
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip();
    }
};

export const actuator_xxbit_rgb_display = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("RGB灯");
        this.appendDummyInput()
            .appendField("生效");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip();
    }
};

export const actuator_asbit_esp_reset = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("将");
        this.appendDummyInput()
            .appendField("ESP32 复位重启");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip();
    }
};


//-----------------LTBIT-板载库----------------
export const actuator_ltbit_Servo = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("设置舵机")
            .appendField(new Blockly.FieldDropdown([
                ['S1', '0'],
                ['S2', '1'],
                ['S3', '2'],
                ['S4', '3'],
                ['S5', '4'],
                ['S6', '5'],
                ['S7', '6'],
                ['S8', '7']
            ]), 'mode');
        this.appendValueInput('range')
            .appendField("角度")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("°");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:设置1~8号舵机角度(0~180)");
    }
};

export const actuator_ltbit_get_Servo = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("获取舵机")
            .appendField(new Blockly.FieldDropdown([
                ['S1', '0'],
                ['S2', '1'],
                ['S3', '2'],
                ['S4', '3'],
                ['S5', '4'],
                ['S6', '5'],
                ['S7', '6'],
                ['S8', '7']
            ]), 'mode');
        this.appendDummyInput()
            .appendField("角度 °");
        this.setInputsInline(true);
        this.setOutput(true, Number);
        this.setTooltip("[Teaile]:获取1~8号舵机角度(0~180)");
    }
};

export const actuator_ltbit_Motor = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("设置马达")
            .appendField(new Blockly.FieldDropdown([
                ['M1', '0'],
                ['M2', '1'],
                ['M3', '2'],
                ['M4', '3']
            ]), 'mode');
        this.appendValueInput('speed')
            .appendField("转速")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("%");
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setInputsInline(true);
        this.setTooltip("[Teaile]:设置1~4号马达速度(-100~100%)");
    }
};

export const actuator_ltbit_get_Motor = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("获取马达")
            .appendField(new Blockly.FieldDropdown([
                ['M1', '0'],
                ['M2', '1'],
                ['M3', '2'],
                ['M4', '3']
            ]), 'mode');
        this.appendDummyInput()
            .appendField("速度 %");
        this.setInputsInline(true);
        this.setOutput(true, Number);
        this.setTooltip("[Teaile]:获取1~4号马达速度(-100~100%)");
    }
};

//---------------AIBIT板载传感器资源---20240122-------------------
export const actuator_aibit_setled = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("设置");
        this.appendDummyInput()
            .appendField("闪光灯");
        this.appendValueInput('bright')
            .appendField("亮度")
            .setCheck(Number);
        this.appendDummyInput()
            .appendField("%");
        this.setInputsInline(true);
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setTooltip();
    }
};

export const actuator_aibit_getled = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("获取");
        this.appendDummyInput()
            .appendField("闪光灯亮度值");
        this.setInputsInline(true);
        this.setOutput(true, Number);
        this.setTooltip();
    }
};

export const NOTE_SELET = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput("")
            .appendField(new Blockly.FieldDropdown([
                ["NOTE_C3", "131"], ["NOTE_D3", "147"], ["NOTE_E3", "165"], ["NOTE_F3", "175"], ["NOTE_G3", "196"], ["NOTE_A3", "220"], ["NOTE_B3", "247"],
                ["NOTE_C4", "262"], ["NOTE_D4", "294"], ["NOTE_E4", "330"], ["NOTE_F4", "349"], ["NOTE_G4", "392"], ["NOTE_A4", "440"], ["NOTE_B4", "494"],
                ["NOTE_C5", "523"], ["NOTE_D5", "587"], ["NOTE_E5", "659"], ["NOTE_F5", "698"], ["NOTE_G5", "784"], ["NOTE_A5", "880"], ["NOTE_B5", "988"]
            ]), "NOTE");
        this.setOutput(true);
        this.setTooltip();
    }
};

export const actuator_aibit_buzzerpitch = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("设置");
        this.appendDummyInput()
            .appendField("蜂鸣器");
        this.appendValueInput('fre')
            .appendField("频率Hz");
        this.appendValueInput('vol')
            .appendField("音量%")
            .setCheck(Number);
        this.setInputsInline(true);
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setTooltip();
    }
};

export const actuator_aibit_buzzerstop = {
    init: function () {
        this.setColour(ACTUATOR_HUE);
        this.appendDummyInput()
            .appendField("设置");
        this.appendDummyInput()
            .appendField("蜂鸣器 停止播放");
        this.setInputsInline(true);
        this.setPreviousStatement(true, null);
        this.setNextStatement(true, null);
        this.setTooltip();
    }
};

